import time

user_list = [["张三", "123456", "158811111111", 5000, ""],
             ["李四", "123456", "15882222222", 0, ""],
             ["王五", "123456", "15883333333", 0, ""],
             ["luoj", "123456", "15883333333", 10, ""]]

login_userindex = -1  # 用户的下标
max_pw = 3  # 账号密码最大尝试次数


def find_user_index(username):
    """
    查询用户名的下标，查询不到是 -1
    :param userName: 用户名
    :return: 用户的下标值,查询不到是 -1
    """
    global login_userindex
    for index, user in enumerate(user_list):
        if user[0] == username:
            return index
    else:  # 如果没有遇到break都会执行！
        return -1


def query():
    """print用户余额，然后返回！"""

    print(f"你的余额是:{user_list[login_userindex][3]}")  #
    # 回到主菜单
    main_menu()


def withdraw():
    """
    取款: 判断余额不足
    记录日志
    执行完后返回
    """
    qukuan=int(input("请输入你要取款的金额"))
    yue= user_list[login_userindex][3]
    if qukuan>yue:
        print("余额不足")
        main_menu()
    if qukuan<yue:
       user_list[login_userindex][3]=yue-qukuan
       print(f"完成取款，余额为{user_list[login_userindex][3]}")#补充代码
    now = time.strftime('%Y-%m-%d %H:%M:%S')
    user_list[login_userindex][4] += str(f'{now}：成功取款{qukuan}元，余额为{user_list[login_userindex][3]}元.\n')
    main_menu()  # 直接回主菜单。


def deposite():
    """
    存款：判断不能是负数
    记录日志
    执行完成后返回
    """
    cunkuan=int(input("请输入你要存的金额"))
    yue = user_list[login_userindex][3]
    if cunkuan<0:
        print("重新输入")
        return deposite()
    if cunkuan>0:
        user_list[login_userindex][3]=cunkuan+yue
        print(f"完成存款,你的余额为{user_list[login_userindex][3]}")#补充代码
        now = time.strftime('%Y-%m-%d %H:%M:%S')
        user_list[login_userindex][4] += str(f'{now}：成功存款{cunkuan}元，余额为{user_list[login_userindex][3]}元.\n')
    main_menu()  # 回到主菜单

def transer():
    """
    转账：判断 转账人是否存在， 余额是否足够。
    记录日志：两个人都需要记录。
    执行完成后返回
    """
    yue=user_list[login_userindex][3]
    zhuanz=input("请输入转账人名字")
    index=find_user_index(zhuanz)

    if zhuanz in [i[0] for i in user_list]:
       mon = int(input("请输入转账金额"))
       if mon<yue:
           user_list[login_userindex][3] -= mon
           print(user_list[login_userindex])
           print(user_list)
           print(f"转账成功，转账金额是{mon},余额是{user_list[login_userindex][3]}")
           user_list[index][3] += mon
           now = time.strftime('%Y-%m-%d %H:%M:%S')
           user_list[login_userindex][4] += str(f'{now}：成功转账{mon}元，余额为{user_list[login_userindex][3]}元.\n')
           main_menu()
       if mon>yue:
            print("余额不足，重新输入")
            main_menu()
    else:
        print("该用户不存在")



    # print("完成转账？？？？？？？？")#补充代码
    main_menu()  # 回到主菜单



def history_write(user_index=login_userindex, logs=""):
    """
    流水：字符串记录，用\n分割
    """
    u=user_index
    user_list[user_index][4] += logs + "\n"


def history_read():
    """打印流水"""
    print(user_list[login_userindex][4])
    main_menu()  # 打印完了回到主菜单


def star_meun():
    """
    开始菜单
    :return: None
    """
    print("欢迎来到WoniuATM".center(83, "*"))
    print("请选择操作菜单".center(81, "*"))
    print("1.注册  2.登录  3.退卡".center(83, "*"))
    option = input("请输入你的操作选项：")
    if option == "1":
        reg()  # 注册功能
    elif option == "2":
        login()  # 登录功能
    elif option == "3":
        exit("谢谢,欢迎下次光临。")  # 结束程序运行，括号中的内容是，结束时的提示符。
    else:
        print("指令错误，重新选择。")
        star_meun()


def main_menu():
    """
    登录成功后的菜单
    :return: None
    """
    print("请选择操作菜单".center(81, "*"))
    print("1.查询 2.取款 3.存款 4.转账 5.流水 6.返回 7.退卡".center(75, "*"))
    option = input("请输入你的操作选项：")
    if option == "1":
        query()
    elif option == "2":
        withdraw()
    elif option == "3":
        deposite()
    elif option == "4":
        transer()
    elif option == "5":
        history_read()
    elif option == "6":
        star_meun()
    elif option == "7":
        exit("再见，欢迎下次光临。")
    else:
        print("你输入的选项有误，请重新选择！")
        main_menu()


def reg():
    """
    注册菜单： 判断是否存在用户名。
    不存在则可以添加用户名。
    """
    import random
    username=input("请输入用户名：")
    if find_user_index(username)>=0:
        print("该用户已注册")

    else:
        # 补充代码
        password = input("请输入密码：")
        phone = input("请输入电话号码")
        user_list.append([username,password,phone,0,""])
        print("完成注册,注册成功")
        print(user_list)
    star_meun()


def login():
    """
    登录: 最大三次机会，
    """
    global login_userindex
    username=input("请输入用户名")
    password=input("请输入密码")
    index=find_user_index(username)
    if index>=0:
        if user_list[index][1]==password:
            print("恭喜，登录成功")# 补充代码
            login_userindex=index
            main_menu()  # 主菜单
        else:
            global max_pw
            if max_pw > 0:
                max_pw=max_pw-1
                print(f"密码错误,你还有{max_pw}次机会")
                login()
    else:
        print("用户名不存在")
    star_meun()

star_meun()  # 启动的位置。
